﻿
public class Solution26
{
    public int RemoveDuplicates2(int[] nums)//这个想法有一些暴力，fast后面移动太耗时间，可以简化一下
    {
        int length = nums.Length;
        if (length == 0) return 0;
        if (length == 1) return 1;
        int slow = 0;
        int fast = 1;
       
        //左指针slow一直向右。右指针fast也一直向右。
        while (fast < length)
        { 
        if (nums[fast] == nums[slow])
            {
                //把fast后面的移动过来
                for (int i = fast; i < nums.Length-1; i++)
                {
                    nums[i] = nums[i +1];

                }
            length--;//长度减一

            }
            else
            {
                fast++;
                slow++;
            }
        
        }
        //for(int i = 0; i < length; i++) {
        //    Console.WriteLine(nums[i]);
        //}


        return length; 
        
    } public int RemoveDuplicates(int[] nums)//这个想法有一些暴力，fast后面移动太耗时间，可以简化一下
    {
        int length = nums.Length;
        if (length == 0) return 0;
        
        int slow = 1;
        int fast = 1;
       
        //左指针slow一直向右。右指针fast也一直向右。
        while (fast < length)
        { 
        if (nums[fast] == nums[fast-1])//一样的就后移
            {

                fast++;

            }
            else//不一样的就往前面填
            {

                nums[slow] = nums[fast];
                slow++;
            }
        
        }
        //for(int i = 0; i < length; i++) {
        //    Console.WriteLine(nums[i]);
        //}


        return slow; 
        
    }
}

class Program26
{
    static void Main26(string[] args)
    {
        int[] nums = [1, 1, 2];
        Solution26 solution = new Solution26();
        int res= solution.RemoveDuplicates(nums);
        Console.WriteLine("res"+res);

    }
}
